package com.mmall.service;

import com.mmall.common.ServerResponse;
import com.mmall.pojo.User;

/**
 * @Author: hps
 * @Description:
 * @Date: Created in 10:32 2018/7/14
 */
public interface IUserService {

    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @return
     */
    ServerResponse<User> login(String username, String password);

    /**
     * 注册
     * @param user 注册的用户信息
     * @return
     */
    ServerResponse<String> register(User user);

    /**
     * 检查用户名或邮箱是否可用
     * @param str 表示用户名或者邮箱
     * @param type 验证的类型: username, email
     * @return
     */
    ServerResponse<String> checkValid(String str, String type);

    /**
     * 忘记密码时查询问题
     * @param username 用户名
     * @return
     */
    ServerResponse<String> selectQuestion(String username);

    /**
     * 检查问题答案是否正确
     * @param username 用户名
     * @param question 问题
     * @param answer 答案
     * @return
     */
    ServerResponse<String> checkAnswer(String username, String question, String answer);

    /**
     * 密码重置
     * @param username 用户名
     * @param passwordNew 新密码
     * @param forgetToken token
     * @return
     */
    ServerResponse<String> forgetResetPassword(String username, String passwordNew, String forgetToken);

    /**
     * 登录状态下密码重置
     * @param passwordOld 旧密码
     * @param passwordNew 新密码
     * @param user 当前登录的用户
     * @return
     */
    ServerResponse<String> resetPassword(String passwordOld, String passwordNew, User user);

    /**
     * 更新用户信息
     * @param user 新的用户信息
     * @return
     */
    ServerResponse<User> updateInformation(User user);

    /**
     * 根据用户id获取用户信息
     * @param userId 用户id
     * @return
     */
    ServerResponse<User> getInformation(Integer userId);

    /**
     * 校验当前登录的用户是否为管理员
     * @param user 当前登录的用户
     * @return
     */
    ServerResponse checkAdminRole(User user);
}
